package com.woniuxy.service.impl;

import com.woniuxy.entity.MyhOrder;
import com.woniuxy.mapper.OrderMapper;
import com.woniuxy.service.OrderService;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author: 马宇航
 * @Todo: TODO
 * @DateTime: 25/03/07/星期五 15:52
 * @Component: 成都蜗牛学苑
 **/
@Service
public class OrderServiceImpl  implements OrderService {

    @Autowired
    OrderMapper orderMapper;
    @Autowired
    RabbitTemplate rabbitTemplate;

    @Override
    public int save(MyhOrder order) {
        //订单保存
        int insert = orderMapper.insert(order);
        if (insert > 0) {
            // 发送消息 到正常交换机
            order.setOrderName("ttlRouting，自动不消费过期，进入死信队列");
            rabbitTemplate.convertAndSend("nomalExchange","ttlRouting", order);
            order.setOrderName("normalRouting，超过了5个数据，就会进入死信队列");
            rabbitTemplate.convertAndSend("nomalExchange","normalRouting", order);
//            // 发送消息 routingkey 可以直接绑定空串交换机 然后队列名就成为了routingkey，后面不这么用
//            rabbitTemplate.convertAndSend("workQueue", order);
//            // 发送消息 广播模式 routingkey是用来绑定交换机和对应的队列的，但是广播不需要绑定，
//            if (order.getIsPay()==1) {
//                //已经支付，则两个队列都通知
//                rabbitTemplate.convertAndSend("directExchange","a", order.getOrderName()+"已经支付。");
//            }else {
//                //未支付，只通知队列2 通过routingkey来 表示 消息发给哪个队列
//                rabbitTemplate.convertAndSend("directExchange", "b", order.getOrderName()+"还未支付，只通知短信。");
//            }
        }
        return insert;
    }

    @Override
    public int updateById(MyhOrder order) {
        return orderMapper.updateById(order);
    }

    @Override
    public int removeById(int id) {
        return orderMapper.deleteById(id);
    }

    @Override
    public boolean removeByIds(List<Long> ids) {
        return orderMapper.deleteBatchIds(ids) > 0;
    }

    @Override
    public List<MyhOrder> findAll() {
        return orderMapper.findAll();
    }
}
